package com.ukadas.eduko.persistencia;

import java.util.List;

import javax.faces.bean.ManagedProperty;

import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.ukadas.eduko.modelo.Alumno;
import com.ukadas.eduko.modelo.Proyecto;
import com.ukadas.eduko.modelo.mtm.AlumnoProyecto;
import com.ukadas.eduko.negocio.GestorProyectos;

@Repository
public class AlumnoDaoSpringHibernate4Implementation implements AlumnoDao {

	@Autowired
	private SessionFactory sessionFactory;
	
	@Autowired
	private GestorProyectos gestorProyectos;

	
	public void setGestorProyectos(GestorProyectos gestorProyectos) {
		this.gestorProyectos = gestorProyectos;
	}

	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

	public void insertar(Alumno alumno)  {
		sessionFactory.getCurrentSession().save(alumno);
	}

	public void modifcar(Alumno alumno)  {
		sessionFactory.getCurrentSession().update(alumno);
	}

	public void borrar(Alumno alumno)  {
		alumno.setBorrado(true);
		sessionFactory.getCurrentSession().update(alumno);
	}

	public Alumno buscar(int idPersona)  {
		return (Alumno)	sessionFactory.getCurrentSession().get(Alumno.class, idPersona);
	}

	@SuppressWarnings("unchecked")
	public List<Alumno> listarTodos()  {
		return sessionFactory.getCurrentSession().createQuery("from Alumno a where a.borrado=0").list();
	}

	@Override
	public List<AlumnoProyecto> listarPorProyecto() {
		Proyecto proyecto=gestorProyectos.buscar(10);
		Query q=sessionFactory.getCurrentSession().createQuery("from AlumnoProyecto ap where ap.borrado=0 and ap.proyecto.idProyecto=:idProyecto");
		q.setParameter("idProyecto", proyecto.getIdProyecto());
		return q.list();
	}

	
}
